package cn.shengchao.examstar.knowledge.shared.service;

import cn.shengchao.examstar.knowledge.domain.entity.KnowledgePoint;
import cn.shengchao.examstar.knowledge.shared.dto.MasteryAnalysisDTO;

import java.util.List;

/**
 * 知识点共享服务接口
 * 提供知识点相关的共享服务
 */
public interface KnowledgePointSharedService {

    /**
     * 根据类目ID查询知识点列表
     *
     * @param specificationTypeId 类目ID
     * @return 知识点列表
     */
    List<KnowledgePoint> getKnowledgePointsBySpecificationType(Long specificationTypeId);

    /**
     * 根据知识点id查询相关知识点列表
     *
     * @param specificationTypeIds 类目ID列表
     * @return 知识点列表
     */
    List<KnowledgePoint> getKnowledgePointsByIds(List<Long> specificationTypeIds);

    /**
     * 根据知识点ID查询知识点
     *
     * @param knowledgePointId 知识点ID
     * @return 知识点
     */
    KnowledgePoint getKnowledgePointById(Long knowledgePointId);

    /**
     * 根据父节点ID查询知识点列表
     *
     * @param parentId 父节点ID
     * @return 知识点列表
     */
    List<KnowledgePoint> getKnowledgePointsByParentId(Long parentId);

    /**
     * 获取用户在特定类目下的知识点列表
     *
     * @param userId 用户ID
     * @param specificationTypeId 类目ID
     * @return 知识点列表
     */
    List<KnowledgePoint> getUserKnowledgePointsBySpecificationType(Long userId, Long specificationTypeId);

    /**
     * 获取用户在特定类目下的知识点掌握度分析
     * 由AI分析用户的知识点掌握情况，生成综合分析结果
     *
     * @param userId 用户ID
     * @param specificationTypeId 类目ID
     * @return 掌握度分析结果
     */
    MasteryAnalysisDTO getMasteryAnalysis(Long userId, Long specificationTypeId);

    /**
     * 获取用户在特定学习计划下的知识点掌握度分析
     * 由AI分析用户的知识点掌握情况，生成综合分析结果
     *
     * @param userId 用户ID
     * @param specificationTypeId 类目ID
     * @param studyPlanId 学习计划ID
     * @return 掌握度分析结果
     */
    MasteryAnalysisDTO getMasteryAnalysis(Long userId, Long specificationTypeId, Long studyPlanId);
} 